1. The Field of the Invention
The present invention relates to displaying a video stream. More particularly, the present invention relates to systems, methods, and computer program products for displaying at least a portion of a video stream when the video stream is subject to bandwidth constraints and memory limitations.
2. Background and Relevant Art
The Internet is a resource that contains a vast amount of information in varying forms. Data can be stored and accessed, for example, as text, images, and streaming video. Each different kind of data has certain characteristics that affect how the data is downloaded and viewed. Text, for example, requires relatively little memory on a computer or other processing device and can be downloaded rather quickly even over slow network connections. Image data, in comparison with text data, is typically larger in size and will therefore require more time to download to the set top box. While the size of the image data does not preclude a user from downloading the image, the size of the image does affect the amount of time that is required to download the image. A user who has a slow network connection is simply required to wait. Once an image is downloaded, however, it can be easily displayed and connection bandwidth is no longer a concern for that image.
Video streams, however, are significantly different from text data and image data. Streaming video is a series of images that, when displayed in rapid succession, provide the illusion of movement. Because the images must be displayed in relatively rapid succession, the connection speed can have a significant impact on the ability of the computer to display the video stream. Currently, video streams are suppressed if the computer cannot maintain sufficient throughput with respect to the video stream. In other words, the ability of many computers to display video streams is limited by the speed of their connection with the video stream source.
In addition to being a series of images, video streams are usually compressed. A computer is therefore required to decompress the video stream before it can be displayed to a user. Decompressing and processing a video stream is not a simple process. Decompressing the video stream, for example, often requires the computer to perform complex operations such as an inverse discrete cosine transform (DCT) and an inverse quantization multiple times for each frame of the video stream. In addition, the computer is required to perform other processing, such as motion compensation, related to reconstructing some of the frames in the video stream.
In addition to the memory and processing power required to fully decode the video stream, the computer must create and manage various memory buffers that are used to store copies of various reference frames used to reconstruct other frames of the video stream. For example, a video stream such as a Moving Pictures Experts Group (MPEG) stream contains I frames, P frames, and B frames. B frames are bi-directional frames that can reference two separate frames that contain data required to decode the B frame. A P frame typically only references a single frame and only one memory buffer is required in this instance. The memory required to decompress and process B frames and P frames can consume a significant amount of memory and processing power. As the resolution of a video stream increases, more memory and/or resources of the computer are consumed. Thus, the ability of a computer to display a video stream is also limited by the available memory and processing power of the computer.
Because of these limitations, many computers are simply unable to access a significant amount of content, including video streams, that is otherwise available, for example, on the Internet. Many web sites, for instance, provide different versions of the same video stream and each version is geared towards a specific bandwidth. Video streams that can be accessed over connections with relatively low bandwidth typically have lower resolution and are of lower quality their counterparts. Computers with dial up connections are particularly susceptible to the bandwidth limitation.
Many computers are, therefore, unable to display video streams because of the connection speed or bandwidth of their network connection and because of the memory/resource limitations of the computer. In these instances, the video is suppressed by the computer and the user is unable to view these video streams.